/**
 * 神州信息(2012)
 */
package net.abbp.report.export;

import java.util.HashMap;
import java.util.Map;

import net.abbp.report.model.ReportModel;
import net.abbp.report.view.cell.value.ImageValue;

/**
 * 值对象输出Expport
 * 
 * @version 1.0
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since ABBP 1.0
 * 
 *        <pre>
 * 历史：
 *      建立: Jul 31, 2012 lexloo
 * </pre>
 */
public enum ValueExportManager {
    INSTANCE;

    private Class<?> defaultClazz = Object.class;
    /**
     * IValueExport
     */
    private Map<Class<?>, IValueExport> valueExportMap = new HashMap<Class<?>, IValueExport>();

    ValueExportManager() {
        register(defaultClazz, new DefaultValueExport());
        register(ImageValue.class, new ImageDataValueExport());
        register(ReportModel.class, new ReportModelValueExport());
    }

    /**
     * 对象注册
     * 
     * @param clazz 注册类
     * @param io 注册的对象
     */
    public void register(Class<?> clazz, IValueExport export) {
        valueExportMap.put(clazz, export);
    }

    /**
     * 通过类名获取IValueIO
     * 
     * @param clazz 类名
     * @return IValueIO 对象
     */
    public IValueExport getValueExport(Class<?> clazz) {
        IValueExport export = valueExportMap.get(clazz);

        if (export == null) {
            export = getValueExport(defaultClazz);
        }

        return export;
    }
}
